#!/bin/sh
# (c) 2010 Alexander Wirt <formorer@formorer.de>
# 
# The general idea for this script got collected from several blog entrys
# and the syslinux wiki. If you think you should get mentioned in the authors
# or copyright file, please tell me :). 
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

set -e

IMAGES=/boot/images

if [ -e "/etc/default/grub-imageboot" ]
then
	. /etc/default/grub-imageboot
fi

. /usr/lib/grub/grub-mkconfig_lib

imageboot_add() {
	local extension="$1"
	local options="$2"
	local message_txt="$3"
	local menu_txt="$4"

	echo "$message_txt: $image" >&2
	cat << EOF
menuentry "$menu_txt: $(basename "$IMAGEPATH" | sed -e "s/[.]$extension\$//")" {
EOF
	prepare_grub_to_access_device "$($grub_probe -t device "$image")" | sed -e "s/^/\t/"
	cat << EOF
	linux16 $MEMDISKPATH $options
	initrd16 $IMAGEPATH
}
EOF
}

if test -e /boot/memdisk ; then
	MEMDISKPATH=$( make_system_path_relative_to_its_root "/boot/memdisk" )
	echo "Found memdisk: $MEMDISKPATH" >&2
	if [ ! -d "$IMAGES" ]; then
		echo "Imagepath $IMAGES not found" >&2
		exit
	fi
	find "$IMAGES" -name '*.iso' -o -name '*.img' | sort |
	while read image ; do
		IMAGEPATH=$( make_system_path_relative_to_its_root "$image" )
		case "$image" in
			*.iso)
				imageboot_add "iso" "${ISOOPTS:-iso}"      "Found iso image"    "Bootable ISO Image"
				;;
			*.img)
				imageboot_add "img" "${IMAGEOPTS:-rawimg}" "Found floppy image" "Bootable Floppy Image"
				;;
		esac
	done
else 
	echo "memdisk not found" >&2
	echo "Please copy /usr/lib/syslinux/memdisk to /boot/memdisk" >&2 
fi
